Jackson একটি শক্তিশালী JSON প্রসেসিং লাইব্রেরি যা Java-তে serialization, deserialization এবং JSON ডেটা হ্যান্ডল করার জন্য ব্যাপকভাবে ব্যবহৃত হয়। Gradle ব্যবহার করে আপনার প্রকল্পে Jackson অন্তর্ভুক্ত করা খুব সহজ।
1. Gradle-এ Jackson অন্তর্ভুক্ত করার ধাপসমূহ
Step 1: Gradle প্রকল্প সেটআপ করুন
Gradle-এ আপনার build.gradle ফাইল খুলুন।
Step 2: Dependencies যোগ করুন
মৌলিক Jackson ডিপেন্ডেন্সি:
dependencies {
// Jackson Databind: Core Library for JSON Serialization and Deserialization
implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'
// Optional: Core Jackson modules
implementation 'com.fasterxml.jackson.core:jackson-core:2.15.2'
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.15.2'
}
Additional Modules (Optional):
Java 8 Date/Time Support:
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.2'XML Support:
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.15.2'YAML Support:
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.2'Validation (JSON Schema Support):
implementation 'com.fasterxml.jackson.module:jackson-module-jsonSchema:2.15.2'Kotlin Support:
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.15.2'
2. Gradle প্রকল্প Build এবং Sync করা
Step 1: Gradle Build চালান
Gradle Build রান করতে gradle build কমান্ড ব্যবহার করুন অথবা IntelliJ IDEA/Eclipse-এর Gradle টুল ব্যবহার করুন।
Step 2: Dependencies Sync করুন
Gradle ফাইল সেভ করার পর প্রকল্পে ডিপেন্ডেন্সিগুলো সিঙ্ক করুন। IntelliJ IDEA-তে Refresh Gradle Project ক্লিক করুন।
3. Jackson অন্তর্ভুক্ত করার পর টেস্ট কোড
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) throws Exception {
User user = new User(101, "John Doe", "john.doe@example.com");
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(user);
System.out.println("Serialized JSON: " + json);
}
}
class User {
public int id;
public String name;
public String email;
public User(int id, String name, String email) {
this.id = id;
this.name = name;
this.email = email;
}
}
Deserialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) throws Exception {
String json = """
{
"id": 101,
"name": "John Doe",
"email": "john.doe@example.com"
}
""";
ObjectMapper objectMapper = new ObjectMapper();
User user = objectMapper.readValue(json, User.class);
System.out.println("Deserialized User: " + user.name);
}
}
4. Common Jackson Annotations
@JsonProperty:- JSON ফিল্ডকে Java ফিল্ডের সঙ্গে ম্যাপ করে।
@JsonProperty("user_id") public int id;@JsonIgnore:- নির্দিষ্ট ফিল্ড Serialization এবং Deserialization থেকে বাদ দেয়।
@JsonIgnore public String password;@JsonInclude:- শুধুমাত্র non-null বা non-default ভ্যালু অন্তর্ভুক্ত করতে ব্যবহৃত।
@JsonInclude(JsonInclude.Include.NON_NULL)@JsonFormat:- তারিখ এবং সময় ফরম্যাট কাস্টমাইজ করতে।
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") public LocalDate birthDate;@JsonCreatorএবং@JsonValue:- Enum Mapping বা Custom Deserialization-এর জন্য।
@JsonCreator public static Status fromValue(String value) { ... } @JsonValue public String toValue() { ... }
5. Gradle Project Structure
project/
├── build.gradle
├── settings.gradle
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── Main.java
│ │ │ ├── User.java
│ ├── test/
│ ├── java/
│ ├── SerializationTest.java
│ ├── DeserializationTest.java
6. Testing with JUnit
JUnit Test Example for Serialization:
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class SerializationTest {
@Test
public void testSerialization() throws Exception {
User user = new User(101, "John Doe", "john.doe@example.com");
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(user);
assertTrue(json.contains("\"id\":101"));
assertTrue(json.contains("\"name\":\"John Doe\""));
assertTrue(json.contains("\"email\":\"john.doe@example.com\""));
}
}
JUnit Test Example for Deserialization:
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class DeserializationTest {
@Test
public void testDeserialization() throws Exception {
String json = """
{
"id": 101,
"name": "John Doe",
"email": "john.doe@example.com"
}
""";
ObjectMapper objectMapper = new ObjectMapper();
User user = objectMapper.readValue(json, User.class);
assertEquals(101, user.id);
assertEquals("John Doe", user.name);
assertEquals("john.doe@example.com", user.email);
}
}
- Gradle ব্যবহার করে Jackson লাইব্রেরি সহজেই অন্তর্ভুক্ত এবং পরিচালনা করা যায়।
- Serialization এবং Deserialization টেস্ট করার মাধ্যমে কোডের গুণগত মান নিশ্চিত করা যায়।
- Optional মডিউল ব্যবহার করে XML, YAML, এবং JSON Schema সাপোর্ট যোগ করা যায়।
Gradle এবং Jackson-এর সমন্বয় API ডেভেলপমেন্ট আরও সহজ এবং কার্যকর করে তোলে।
Read more